Visual Basic (Declaration) | |
---|---|
Public Overloads Sub ResizeBuffer( _ ByVal row As Integer, _ ByVal column As Integer, _ ByVal buffer() As Byte, _ ByVal bufferOffset As Integer, _ ByVal bytes As Integer _ ) |
Visual Basic (Usage) | Copy Code |
---|---|
|
Managed Extensions for C++ | |
---|---|
public: void ResizeBuffer( int row, int column, byte[]* buffer, int bufferOffset, int bytes ) |
C++/CLI | |
---|---|
public: void ResizeBuffer( int row, int column, array<byte>^ buffer, int bufferOffset, int bytes ) |
Parameters
- row
- The number of the row to retrieve. The first row is 0, and the last row is 1 less than the image Height.
- column
- The column offset within the row to retrieve. The first column offset is 0, and the last column offset is 1 less than the image Width.
- buffer
- The buffer to hold the image data that this method gets.
- bufferOffset
- The zero-based index into buffer where retrieving should start.
- bytes
The number of bytes to retrieve. Consider the BitsPerPixel, and avoid specifying a number that goes past the end of the row.
For a 1-bit image, each byte represents 8 pixels. For a 4-bit image, each byte represents 2 pixels. For an 8-bit image, each byte represents 1 pixel. For a 16-bit image, every 2 bytes represents one pixel. For a 24-bit image, every three bytes represents one pixel. For a 32-bit image, every four bytes represents one pixel. For a 48-bit image, every six bytes represents one pixel. For a 64-bit image, every eight bytes represents one pixel.
You can use the BitsPerPixel property with integer math to calculate the number of bytes needed for a particular number of pixels. For example:
NumberOfBytes = (Image.BitsPerPixel * NumberOfPixels) / 8; if ((Image.BitsPerPixel * NumberOfPixels) % 8) ++NumberOfBytes; // Round up if necessary for a 1- or 4-bit image
By using this low-level method to get any part of a row, you can write a procedure that accesses a single pixel or a rectangular area within the image.
This method accepts an offset parameter (column) in pixels and a length (bytes) in bytes. Therefore, you must consider the BitsPerPixel of the image when specifying these parameters. The following table describes the rules:
BitsPerPixel | Column Offset (in Pixels) | Bytes to Get |
---|---|---|
1 | Must be a multiple of 8 (such as 0,8, or 16). | Can be any number up to the end of the row. Consider that there are 8 pixels per byte. |
4 | Must be an even number (such as 0, 2, or 4). | Can be any number up to the end of the row. Consider that there are 2 pixels per byte. |
8 | Can be any column within the image. | Can be any number up to the end of the row. Consider that there is 1 pixel per byte. |
16 | Can be any column within the image. | Must be a multiple of 2 (such as 2, 4, or 6), because there are 2 bytes per pixel. |
24 | Can be any column within the image. | Must be a multiple of 3 (such as 3, 6, or 9), because there are 3 bytes per pixel. |
32 | Can be any column within the image. | Must be a multiple of 4 (such as 4, 8, or 12), because there are 4 bytes per pixel. |
48 | Can be any column within the image. | Must be a multiple of 6 (such as 6, 12, or 18), because there are 6 bytes per pixel. |
64 | Can be any column within the image. | Must be a multiple of 8 (such as 8, 16, or 24), because there are 8 bytes per pixel. |
Do not pass a value in bytes that goes past the end of the row. The process is faster when rows are retrieved sequentially, either top-down or bottom-up.
For more information, refer to Processing an Image.
Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family